<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="created" content="2018-10-23T06:18:10.521000000">
    <meta name="changed" content="2020-01-07T06:18:42.262000000">
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Language" content="ru">
    <title>
      Задержки логических элементов
    </title>
    <link rel="stylesheet" type="text/css" href="../../style.css">
  </head>
  <body>
    <div class="maindiv">
      <h1>
        Задержки логических элементов
      </h1>
      <p>
        В качестве примера уровня проработанности алгоритма Logisim рассмотрим следующую схему.
      </p>
            <p align="center">
        <img class="notscal" src="../../../../img-guide/prop-const0.png" alt="#########">
      </p>
      <p>
        Она "очевидно" всегда даёт 0 на выходе. Но элементы НЕ не реагируют мгновенно на сигналы на входах в реальности, и в Logisim - тоже. В результате, когда значение на входе этой цепи изменяется с 0 на 1, элемент И будет короткое время видеть 1 на обоих входах, и выдаст на выходе 1 на короткое время. Вы не увидите этого на экране. Но этот эффект можно наблюдать, если мы подадим выход элемента И на тактовый вход D триггера.
      </p>
      <p align="center">
        <img class="notscal" src="../../../../img-guide/prop-using-const0.png" alt="#########">
      </p>
      <p>
        Если вы нажмёте на вход чтобы изменить значение с 0 на 1, то на D триггер мгновенно придёт 1, и его значение будет переключаться каждый раз, когда значение на входе схемы меняется с 0 на 1.
      </p>
      <p>
        Каждый компонент имеет задержку, связанную с ним. Более сложные компоненты, встроенные в Logisim, как правило имеют большие задержки, но эти задержки несколько произвольны и могут не отражать реальность.
      </p>
	  <center>
        <img class="notscal" src="../../../../img-guide/propagat.gif" alt="#########"><br>
		Logisim world<br><br>
		<img class="notscal" src="../../../../img-guide/reallife2.png" alt="#########"><br>
		Real world
      </center>
      <p>
        С технической точки зрения относительно легко обойтись таким уровнем проработанности в одной схеме. Удачное манипулирование с задержками элементов в подсхемах, однако, является немного более сложным; Logisim пытается справиться с этим, располагая просчитываемые для примитивных компонентов значения в одну очередь, независимо от подсхемы, в которой находится компонент.
      </p>
      <p>
        (Через <a href="../opts/opts-simulate.html">вкладку Моделирование</a> окна <a href="../opts/index.html">Параметры проекта</a> вы можете настроить Logisim на добавление случайной задержки к просчёту компонента. Это сделано для того, чтобы имитировать неравномерность реальных схем. Например, R-S триггер, построенный с использованием двух элементов ИЛИ-НЕ, будет возбуждаться без этой случайности, так как оба элемента будут обрабатывать свои входы "нога в ногу". Эта случайность отключена по умолчанию.)
      </p>
      <p>
        Не могу позволить себе сказать, что Logisim всегда правильно обращается с задержками элементов. Но он по крайней мере пытается.
      </p>
      <p>
        <strong>Далее:</strong> <a href="oscillate.html">Ошибки при возбуждении</a>.
      </p>
    </div>
  </body>
</html>
